package leetcode;

/**
 * 题目：买卖股票的最佳时机 II
 * 链接：https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/description/
 */
public class MaxProfit2 {
    public static void main(String[] args) {
        int[] prices = {7, 1, 5, 3, 6, 4};
        System.out.println(maxProfit(prices));
    }
    //本质是求最大正值区间差
    // 求出最小的股票售价，然后计算出最大的利润
    // 因为是不能先卖，所以只有出现当前最小的股价后再执行卖出
    public static int maxProfit(int[] prices) {
        int minPrice = Integer.MAX_VALUE;
        int maxProfit = 0;
        for (int i = 0; i < prices.length; i++) {
            // 求最小的股价
            minPrice = Math.min(minPrice, prices[i]);
            // 计算当前最大盈利
            maxProfit = Math.max(maxProfit, prices[i] - minPrice);
        }
        return maxProfit;
    }
}
